package plugins.defaultWB;

import java.awt.Desktop;
import java.awt.GridLayout;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URI;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import annotation.Menu;

import interfaces.PluginInterface;

public class DefaultWB implements PluginInterface {
	boolean parDefaut =false;
	/**
	 * Apporte les informations sur le plugin accecible depuis le menu de l'explorateur
	 */
	@Menu(libelle="defaultWB")	
	@Override
	public JPanel getFrameDetail() {
		JPanel p = new JPanel();
		p.setLayout(new GridLayout(10, 3));
		p.add(new JLabel("Details       : defaultWB"));
		p.add(new JLabel("Version     : "+getVersion()));
		StringBuilder extension = new StringBuilder("");
		for(String e : getExtension())
			extension.append(" | "+e);
		p.add(new JLabel("Extension : "+extension));
		if(isDefault()){
			p.add(new JLabel("par défaut  : Oui"));
		}else{
			p.add(new JLabel("par défaut  : Non"));
		}
		
		return p;
	}

	@Override
	public String[] getExtension() {
		// TODO Auto-generated method stub
		return new String[]{"url"};
	}

	@Override
	public String getVersion() {
		// TODO Auto-generated method stub
		return "1.0";
	}

	@Override
	public boolean isDefault() {
		// TODO Auto-generated method stub
		return parDefaut;
	}

	@Override
	public void setDefault(boolean bool) {
		// TODO Auto-generated method stub
		this.parDefaut= bool;

	}
	/**
	 * Appelle le navigateur par defaut puis pointe sur le liens fournie en parametre
	 * @param fichier url
	 */
	@Override
	public JFrame getFrame(File o) {
		  
        try{
                InputStream ips=new FileInputStream(o); 
                InputStreamReader ipsr=new InputStreamReader(ips);
                BufferedReader br=new BufferedReader(ipsr);
                
                String ligne;
                while ((ligne=br.readLine())!=null){
                        
                        if(ligne.toLowerCase().matches("url.*")){
                            
                ligne = ligne.substring(4, ligne.length());
                //System.out.println(ligne);
                Desktop Bureau = Desktop.getDesktop();
                URI url = new URI(ligne);
                                Bureau.browse(url);
        }
                }
                
                br.close(); 
        }               
        catch (Exception e){
                System.out.println(e.toString());
        }
        JFrame jf = new JFrame("defaultWB");
        jf.setVisible(false);
        return jf;
	}
	/**
	 * @return L'icone du fichier qu'il prend en charge
	 */
	@Override
	public ImageIcon getIcon() {
		// TODO Auto-generated method stub
		return new ImageIcon("../Plugin/bin/plugins/defaultWB/defaultWB.png");
	}

}
